package com.github.caijh.mall.front.service;

import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.caijh.mall.common.PageParams;
import com.github.caijh.mall.finance.request.UserExtractRequest;
import com.github.caijh.mall.front.request.UserRechargeRequest;
import com.github.caijh.mall.front.request.UserSpreadPeopleRequest;
import com.github.caijh.mall.front.response.LoginRespBody;
import com.github.caijh.mall.front.response.UserBalanceResponse;
import com.github.caijh.mall.front.response.UserCommissionResponse;
import com.github.caijh.mall.front.response.UserExtractCashResponse;
import com.github.caijh.mall.front.response.UserExtractRecordResponse;
import com.github.caijh.mall.front.response.UserRechargePaymentResponse;
import com.github.caijh.mall.front.response.UserRechargeResponse;
import com.github.caijh.mall.front.response.UserSpreadBannerResponse;
import com.github.caijh.mall.front.response.UserSpreadCommissionResponse;
import com.github.caijh.mall.front.response.UserSpreadOrderResponse;
import com.github.caijh.mall.front.response.UserSpreadPeopleResponse;
import com.github.caijh.mall.system.model.SystemUserLevel;
import com.github.caijh.mall.user.model.User;
import com.github.caijh.mall.user.model.UserBill;
import com.github.caijh.mall.user.request.RegisterThirdUserRequest;
import com.github.pagehelper.PageInfo;

/**
 * 用户中心 服务类
 * +----------------------------------------------------------------------
 * | CRMEB [ CRMEB赋能开发者，助力企业发展 ]
 * +----------------------------------------------------------------------
 * | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
 * +----------------------------------------------------------------------
 * | Licensed CRMEB并不是自由软件，未经许可不能去掉CRMEB相关版权
 * +----------------------------------------------------------------------
 * | Author: CRMEB Team <admin@crmeb.com>
 * +----------------------------------------------------------------------
 */
public interface UserCenterService extends IService<User> {

    UserCommissionResponse getCommission();

    PageInfo<UserSpreadCommissionResponse> getSpreadCommissionByType(int type, PageParams pageParams);

    BigDecimal getSpreadCountByType(int type);

    Boolean extractCash(UserExtractRequest request);

    UserExtractCashResponse minExtractCash();

    List<SystemUserLevel> getUserLevelList();

    UserSpreadPeopleResponse getSpreadPeopleList(UserSpreadPeopleRequest request, PageParams pageParams);

    List<UserBill> getUserBillList(String type, PageParams pageParams);

    UserRechargeResponse getRechargeConfig();

    UserBalanceResponse getUserBalance();

    UserSpreadOrderResponse getSpreadOrder(PageParams pageParams);

    UserRechargePaymentResponse recharge(UserRechargeRequest request);

    LoginRespBody weChatAuthorizeLogin(String code, Integer spreadUid);

    String getLogo();

    LoginRespBody weChatMiniLogin(String code, RegisterThirdUserRequest request);

    List<User> getTopSpreadPeopleListByDate(String type, PageParams pageParams);

    List<User> getTopBrokerageListByDate(String type, PageParams pageParams);

    List<UserSpreadBannerResponse> getSpreadBannerList(PageParams pageParams);

    Integer getNumberByTop(String type);

    Boolean transferIn(BigDecimal price);

    PageInfo<UserExtractRecordResponse> getExtractRecord(PageParams pageParams);

    BigDecimal getExtractTotalMoney();

}
